In computer programming, threads allow for a single program process to create multiple sub-processes. Each thread shares the same address space as the overall process, and thus may access all memory allocated to the process. The threads operate to perform some task. From the perspective of the computer program, each thread is running concurrently. Thus, the computer program may create multiple threads to perform multiple tasks, and from the perspective of the computer program, those tasks are performed in parallel.